﻿using Reactor.Messaging;
using Reactor.ServiceGrid.Repositories;

namespace Reactor.ServiceGrid
{
    public interface IServiceContext
    {
        /// <summary>
        /// Gets or sets the logical name of the service instance.
        /// </summary>
        /// <value>The name.</value>
        string Name { get; }

        /// <summary>
        /// Gets or sets the unique identifier for the service instance.
        /// </summary>
        /// <value>The id.</value>
        int Id { get; }

        /// <summary>
        /// Gets or sets the primary input queue.
        /// </summary>
        /// <value>The primary input queue.</value>
        PointToPointChannel PrimaryInputChannel { get; }

        /// <summary>
        /// Gets or sets the local package repository to which packages the service instance is to look for 
        /// installable packages.
        /// </summary>
        /// <value>The local package repository.</value>
        IPackageRepository LocalPackageRepository { get; }
    }
}
